/**
 * 个人中心配置
 * 提供个人中心相关的配置选项
 */

export const personalCenterConfig = {
  // 缓存配置
  cache: {
    // 缓存持续时间（毫秒）
    duration: 5 * 60 * 1000, // 5分钟
    // 最大缓存条目数
    maxSize: 100,
    // 是否启用缓存
    enabled: true
  },

  // 自动刷新配置
  autoRefresh: {
    // 是否启用自动刷新
    enabled: true,
    // 刷新间隔（毫秒）
    interval: 30 * 1000, // 30秒
    // 只在特定标签页刷新
    tabs: ['dashboard', 'notifications']
  },

  // 请求重试配置
  retry: {
    // 最大重试次数
    maxRetries: 3,
    // 重试延迟（毫秒）
    retryDelay: 1000,
    // 重试条件
    retryCondition: (error) => {
      return error.response?.status >= 500 || 
             error.code === 'NETWORK_ERROR' ||
             error.code === 'TIMEOUT'
    }
  },

  // 分页配置
  pagination: {
    // 默认页面大小
    defaultPageSize: 10,
    // 页面大小选项
    pageSizeOptions: [10, 20, 50, 100],
    // 最大页面大小
    maxPageSize: 100
  },

  // 图表配置
  charts: {
    // 图表动画持续时间
    animationDuration: 1000,
    // 图表响应式
    responsive: true,
    // 图表主题
    theme: 'light'
  },

  // 通知配置
  notifications: {
    // 是否显示通知
    showNotifications: true,
    // 通知持续时间
    duration: 3000,
    // 最大通知数量
    maxCount: 5
  },

  // 文件上传配置
  upload: {
    // 最大文件大小（字节）
    maxFileSize: 5 * 1024 * 1024, // 5MB
    // 允许的文件类型
    allowedTypes: ['image/jpeg', 'image/png', 'image/gif', 'image/webp'],
    // 压缩质量
    compressionQuality: 0.8
  },

  // 搜索配置
  search: {
    // 搜索防抖延迟（毫秒）
    debounceDelay: 300,
    // 最小搜索长度
    minLength: 2,
    // 最大搜索结果
    maxResults: 100
  },

  // 性能配置
  performance: {
    // 是否启用虚拟滚动
    virtualScroll: true,
    // 虚拟滚动项目高度
    itemHeight: 60,
    // 预加载数量
    preloadCount: 10
  },

  // 主题配置
  theme: {
    // 默认主题
    default: 'light',
    // 可用主题
    available: ['light', 'dark', 'auto'],
    // 主题切换动画
    transition: true
  },

  // 语言配置
  language: {
    // 默认语言
    default: 'zh-CN',
    // 可用语言
    available: ['zh-CN', 'en-US'],
    // 是否启用国际化
    i18n: true
  }
}

/**
 * 获取配置值
 * @param {string} path 配置路径，如 'cache.duration'
 * @param {any} defaultValue 默认值
 * @returns {any} 配置值
 */
export function getConfig(path, defaultValue = null) {
  const keys = path.split('.')
  let value = personalCenterConfig
  
  for (const key of keys) {
    if (value && typeof value === 'object' && key in value) {
      value = value[key]
    } else {
      return defaultValue
    }
  }
  
  return value
}

/**
 * 设置配置值
 * @param {string} path 配置路径
 * @param {any} value 配置值
 */
export function setConfig(path, value) {
  const keys = path.split('.')
  const lastKey = keys.pop()
  let target = personalCenterConfig
  
  for (const key of keys) {
    if (!target[key] || typeof target[key] !== 'object') {
      target[key] = {}
    }
    target = target[key]
  }
  
  target[lastKey] = value
}

/**
 * 重置配置到默认值
 */
export function resetConfig() {
  // 这里可以实现配置重置逻辑
  console.log('配置已重置到默认值')
}
